import cv2
import numpy as np

from _00tools import cv_show
"""
@Project: pythonPro1
@Name: _06smooth.py
@Author: linxin_liu
@Date: 2022/10/13 19:10
"""
img0 = cv2.imread('D:/tools/image_operation/lenaNoise.png')
blur = cv2.blur(img0, (3, 3))  # 1. 均值滤波器，简单的平均卷积操作。
cv_show('blur', blur, 5000)

# 2. 方框滤波器，归一化就基本和均值一样。-1&True就是归一化，-1&false就是不归一化。
# 不归一化就是，方框内值相加的话到255就不会变了。
box = cv2.boxFilter(img0, -1, (3, 3), normalize=True)
# cv_show('box', box, 5000)

# 3. 高斯滤波-按权值处理。1表示标准差为1。
gauss = cv2.GaussianBlur(img0, (5, 5), 1)
# cv_show('gauss', gauss, 5000)

# 4. 中值滤波。5x5方框，取中值然后赋值。
median = cv2.medianBlur(img0, 5)
# cv_show('median', median, 5000)

# 展示所有 也可以竖的用vstack()。
# res = np.hstack((blur, box, gauss, median))
# cv2.imshow('1 2 3 4', res)
# cv2.waitKey(0)  # 窗口显示时间，参数为0表示按任意键销毁
# cv2.destroyAllWindows()  # 销毁所有窗口
